Micron Document
🎖️GitЯра🎖️

feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/Reaction.kt 1390a3cd4f7bc55a37433d1d868e65c01678eb31 (1390a3cd) Text, 14.23 KB

T8b949e/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.messaging.component

Tff7b72import T7ee787androidx.compose.animation.AnimatedVisibility
Tff7b72import T7ee787androidx.compose.foundation.BorderStroke
Tff7b72import T7ee787androidx.compose.foundation.background
Tff7b72import T7ee787androidx.compose.foundation.clickable
Tff7b72import T7ee787androidx.compose.foundation.combinedClickable
Tff7b72import T7ee787androidx.compose.foundation.layout.Arrangement
Tff7b72import T7ee787androidx.compose.foundation.layout.Column
Tff7b72import T7ee787androidx.compose.foundation.layout.ExperimentalLayoutApi
Tff7b72import T7ee787androidx.compose.foundation.layout.Row
Tff7b72import T7ee787androidx.compose.foundation.layout.Spacer
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxHeight
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxWidth
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.foundation.layout.size
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyColumn
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyRow
Tff7b72import T7ee787androidx.compose.foundation.lazy.items
Tff7b72import T7ee787androidx.compose.foundation.shape.CircleShape
Tff7b72import T7ee787androidx.compose.material3.HorizontalDivider
Tff7b72import T7ee787androidx.compose.material3.Icon
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.material3.Surface
Tff7b72import T7ee787androidx.compose.material3.Text
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.Alignment
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.draw.clip
Tff7b72import T7ee787androidx.compose.ui.graphics.Color
Tff7b72import T7ee787androidx.compose.ui.graphics.graphicsLayer
Tff7b72import T7ee787androidx.compose.ui.text.font.FontWeight
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787androidx.compose.ui.unit.sp
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.meshtastic.core.model.DataPacket
Tff7b72import T7ee787org.meshtastic.core.model.MessageStatus
Tff7b72import T7ee787org.meshtastic.core.model.Node
Tff7b72import T7ee787org.meshtastic.core.model.Reaction
Tff7b72import T7ee787org.meshtastic.core.model.getStringResFrom
Tff7b72import T7ee787org.meshtastic.core.model.util.getShortDateTime
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.delivery_confirmed
Tff7b72import T7ee787org.meshtastic.core.resources.error
Tff7b72import T7ee787org.meshtastic.core.resources.message_delivery_status
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_delivered
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_enroute
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_queued
Tff7b72import T7ee787org.meshtastic.core.resources.message_status_unknown
Tff7b72import T7ee787org.meshtastic.core.resources.react
Tff7b72import T7ee787org.meshtastic.core.resources.you
Tff7b72import T7ee787org.meshtastic.core.ui.component.BottomSheetDialog
Tff7b72import T7ee787org.meshtastic.core.ui.component.Rssi
Tff7b72import T7ee787org.meshtastic.core.ui.component.Snr
Tff7b72import T7ee787org.meshtastic.core.ui.emoji.EmojiPickerDialog
Tff7b72import T7ee787org.meshtastic.core.ui.icon.AddReaction
Tff7b72import T7ee787org.meshtastic.core.ui.icon.HopCount
Tff7b72import T7ee787org.meshtastic.core.ui.icon.MeshtasticIcons
Tff7b72import T7ee787org.meshtastic.feature.messaging.DeliveryInfo

Tf0883e@Composable
Tff7b72internal Tff7b72fun Td2a8ffReactionItemTb4b4b4(
Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4,
Te6edf3emojiTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3emojiCountTb4b4b4: Tffa657Int Tff7b72= T79c0ff1Tb4b4b4,
Te6edf3statusTb4b4b4: Te6edf3MessageStatus Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3UNKNOWNTb4b4b4,
Te6edf3onClickTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onLongClickTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3isSending Tff7b72= Te6edf3status Tff7b72=Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUED Tff7b72|Tff7b72| Te6edf3status Tff7b72=Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTE
Tff7b72val Te6edf3isError Tff7b72= Te6edf3status Tff7b72=Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERROR

Te6edf3SurfaceTb4b4b4(
Te6edf3modifier Tff7b72=
Te6edf3modifier
Tb4b4b4.Te6edf3combinedClickableTb4b4b4(Te6edf3onClick Tff7b72= Te6edf3onClickTb4b4b4, Te6edf3onLongClick Tff7b72= Te6edf3onLongClickTb4b4b4)
Tb4b4b4.Te6edf3thenTb4b4b4(Tff7b72if Tb4b4b4(Te6edf3isSendingTb4b4b4) Te6edf3ModifierTb4b4b4.Te6edf3graphicsLayerTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.5fTb4b4b4) Tff7b72else Te6edf3ModifierTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72=
Tff7b72when Tb4b4b4{
Te6edf3isError Tff7b72-Tff7b72> Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3errorContainer
Tff7b72else Tff7b72-Tff7b72> Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3surfaceVariantTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.4fTb4b4b4)
Tb4b4b4}Tb4b4b4,
Te6edf3shape Tff7b72= Tff7b72if Tb4b4b4(Te6edf3emojiCount Tff7b72> T79c0ff1Tb4b4b4) Te6edf3MaterialThemeTb4b4b4.Te6edf3shapesTb4b4b4.Te6edf3small Tff7b72else Te6edf3CircleShapeTb4b4b4,
Te6edf3border Tff7b72=
Te6edf3BorderStrokeTb4b4b4(
Te6edf3width Tff7b72= T79c0ff1.Te6edf3dpTb4b4b4,
Te6edf3color Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isErrorTb4b4b4) Tb4b4b4{
Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3error
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3outlineVariantTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.3fTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3horizontal Tff7b72= T79c0ff6.Te6edf3dpTb4b4b4, Te6edf3vertical Tff7b72= T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4,
Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Te6edf3emojiTb4b4b4, Te6edf3fontSize Tff7b72= T79c0ff1T79c0ff4.Te6edf3spTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3emojiCount Tff7b72> T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3emojiCountTb4b4b4.Te6edf3toStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelMediumTb4b4b4,
Te6edf3fontWeight Tff7b72= Te6edf3FontWeightTb4b4b4.Te6edf3BoldTb4b4b4,
Te6edf3fontSize Tff7b72= T79c0ff1T79c0ff2.Te6edf3spTb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceVariantTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@OptInTb4b4b4(Te6edf3ExperimentalLayoutApiTff7b72::Te6edf3classTb4b4b4)
Tf0883e@Composable
Tff7b72internal Tff7b72fun Td2a8ffReactionRowTb4b4b4(
Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4,
Te6edf3reactionsTb4b4b4: Te6edf3ListTff7b72<Te6edf3ReactionTff7b72> Tff7b72= Te6edf3emptyListTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3myIdTb4b4b4: Tffa657String? Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3onSendReactionTb4b4b4: Tb4b4b4(Tffa657StringTb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onShowReactionsTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3emojiGroups Tff7b72= Te6edf3reactionsTb4b4b4.Te6edf3groupBy Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3emoji Tb4b4b4}

Te6edf3AnimatedVisibilityTb4b4b4(Te6edf3emojiGroupsTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4) Tb4b4b4{
Te6edf3LazyRowTb4b4b4(Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4(Te6edf3emojiGroupsTb4b4b4.Te6edf3entriesTb4b4b4.Te6edf3toListTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{ Te6edf3entry Tff7b72-Tff7b72>
Tff7b72val Te6edf3emoji Tff7b72= Te6edf3entryTb4b4b4.Te6edf3key
Tff7b72val Te6edf3reactions Tff7b72= Te6edf3entryTb4b4b4.Te6edf3value
Tff7b72val Te6edf3localReaction Tff7b72= Te6edf3reactionsTb4b4b4.Te6edf3find Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3userTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3DataPacketTb4b4b4.Te6edf3ID_LOCAL Tff7b72|Tff7b72| Tffa657itTb4b4b4.Te6edf3userTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3myId Tb4b4b4}
Te6edf3ReactionItemTb4b4b4(
Te6edf3emoji Tff7b72= Te6edf3emojiTb4b4b4,
Te6edf3emojiCount Tff7b72= Te6edf3reactionsTb4b4b4.Te6edf3sizeTb4b4b4,
Te6edf3status Tff7b72= Te6edf3localReactionTff7b72?.Te6edf3status Tff7b72?: Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVEDTb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onSendReactionTb4b4b4(Te6edf3emojiTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3onLongClick Tff7b72= Te6edf3onShowReactionsTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3item Tb4b4b4{ Te6edf3AddReactionButtonTb4b4b4(Te6edf3onSendReaction Tff7b72= Te6edf3onSendReactionTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72internal Tff7b72fun Td2a8ffAddReactionButtonTb4b4b4(Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4, Te6edf3onSendReactionTb4b4b4: Tb4b4b4(Tffa657StringTb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72var Te6edf3showEmojiPickerDialog Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3showEmojiPickerDialogTb4b4b4) Tb4b4b4{
Te6edf3EmojiPickerDialogTb4b4b4(
Te6edf3onConfirm Tff7b72= Tb4b4b4{ Te6edf3selectedEmoji Tff7b72-Tff7b72>
Te6edf3showEmojiPickerDialog Tff7b72= Tff7b72false
Te6edf3onSendReactionTb4b4b4(Te6edf3selectedEmojiTb4b4b4)
Tb4b4b4}Tb4b4b4,
Te6edf3onDismiss Tff7b72= Tb4b4b4{ Te6edf3showEmojiPickerDialog Tff7b72= Tff7b72false Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3SurfaceTb4b4b4(
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3showEmojiPickerDialog Tff7b72= Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff2T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3surfaceVariantTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.3fTb4b4b4)Tb4b4b4,
Te6edf3shape Tff7b72= Te6edf3CircleShapeTb4b4b4,
Te6edf3border Tff7b72= Te6edf3BorderStrokeTb4b4b4(T79c0ff1.Te6edf3dpTb4b4b4, Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3outlineVariantTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.2fTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(
Te6edf3imageVector Tff7b72= Te6edf3MeshtasticIconsTb4b4b4.Te6edf3AddReactionTb4b4b4,
Te6edf3contentDescription Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3reactTb4b4b4)Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3tint Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceVariantTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongMethodTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCyclomaticComplexityTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCyclomaticComplexMethodTa5d6ff"Tb4b4b4)
Tf0883e@Composable
Tff7b72internal Tff7b72fun Td2a8ffReactionDialogTb4b4b4(
Te6edf3reactionsTb4b4b4: Te6edf3ListTff7b72<Te6edf3ReactionTff7b72>Tb4b4b4,
Te6edf3onDismissTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3myIdTb4b4b4: Tffa657String? Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3onResendTb4b4b4: Tb4b4b4(Te6edf3ReactionTb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3nodesTb4b4b4: Te6edf3ListTff7b72<Te6edf3NodeTff7b72> Tff7b72= Te6edf3emptyListTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3ourNodeTb4b4b4: Te6edf3Node? Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4) Tff7b72= Te6edf3BottomSheetDialogTb4b4b4(Te6edf3onDismiss Tff7b72= Te6edf3onDismissTb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxHeightTb4b4b4(Te6edf3fraction Tff7b72= Tb4b4b4.T79c0ff3fTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3groupedEmojis Tff7b72= Te6edf3reactionsTb4b4b4.Te6edf3groupBy Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3emoji Tb4b4b4}
Tff7b72var Te6edf3selectedEmoji Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTff7b72<Tffa657String?Tff7b72>Tb4b4b4(Tff7b72nullTb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3filteredReactions Tff7b72= Te6edf3selectedEmojiTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3groupedEmojisTff7b72[Tffa657itTff7b72] Tff7b72?: Te6edf3emptyListTb4b4b4(Tb4b4b4) Tb4b4b4} Tff7b72?: Te6edf3reactions

Tff7b72var Te6edf3showStatusDialog Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTff7b72<Te6edf3Reaction?Tff7b72>Tb4b4b4(Tff7b72nullTb4b4b4) Tb4b4b4}
Te6edf3showStatusDialogTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3reaction Tff7b72-Tff7b72>
Tff7b72val Te6edf3title Tff7b72= Tff7b72if Tb4b4b4(Te6edf3reactionTb4b4b4.Te6edf3routingError Tff7b72> T79c0ff0Tb4b4b4) Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3error Tff7b72else Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_delivery_status
Tff7b72val Te6edf3text Tff7b72=
Tff7b72when Tb4b4b4(Te6edf3reactionTb4b4b4.Te6edf3statusTb4b4b4) Tb4b4b4{
Te6edf3MessageStatusTb4b4b4.Te6edf3RECEIVED Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3delivery_confirmed
Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUED Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_queued
Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTE Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_enroute
Te6edf3MessageStatusTb4b4b4.Te6edf3DELIVERED Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_delivered
Te6edf3MessageStatusTb4b4b4.Te6edf3SFPP_ROUTING Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_enroute
Te6edf3MessageStatusTb4b4b4.Te6edf3SFPP_CONFIRMED Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3delivery_confirmed
Te6edf3MessageStatusTb4b4b4.Te6edf3ERROR Tff7b72-Tff7b72> Te6edf3getStringResFromTb4b4b4(Te6edf3reactionTb4b4b4.Te6edf3routingErrorTb4b4b4)
Te6edf3MessageStatusTb4b4b4.Te6edf3UNKNOWN Tff7b72-Tff7b72> Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3message_status_unknown
Tb4b4b4}

Tff7b72val Te6edf3relayNodeName Tff7b72=
Te6edf3reactionTb4b4b4.Te6edf3relayNodeTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3relayNodeId Tff7b72-Tff7b72>
Te6edf3NodeTb4b4b4.Te6edf3getRelayNodeTb4b4b4(Te6edf3relayNodeIdTb4b4b4, Te6edf3nodesTb4b4b4, Te6edf3ourNodeTff7b72?.Te6edf3numTb4b4b4)Tff7b72?.Te6edf3userTff7b72?.Te6edf3long_name
Tb4b4b4}

Te6edf3DeliveryInfoTb4b4b4(
Te6edf3title Tff7b72= Te6edf3titleTb4b4b4,
Te6edf3text Tff7b72= Te6edf3textTb4b4b4,
Te6edf3resendOption Tff7b72= Te6edf3reactionTb4b4b4.Te6edf3status Tff7b72=Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ERRORTb4b4b4,
Te6edf3onConfirm Tff7b72= Tb4b4b4{
Te6edf3onResendTb4b4b4(Te6edf3reactionTb4b4b4)
Te6edf3showStatusDialog Tff7b72= Tff7b72null
Tb4b4b4}Tb4b4b4,
Te6edf3onDismiss Tff7b72= Tb4b4b4{ Te6edf3showStatusDialog Tff7b72= Tff7b72null Tb4b4b4}Tb4b4b4,
Te6edf3relayNodeName Tff7b72= Te6edf3relayNodeNameTb4b4b4,
Te6edf3relays Tff7b72= Te6edf3reactionTb4b4b4.Te6edf3relaysTb4b4b4,
Tb4b4b4)
Tb4b4b4}

Te6edf3LazyRowTb4b4b4(Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4(Te6edf3groupedEmojisTb4b4b4.Te6edf3entriesTb4b4b4.Te6edf3toListTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{ Te6edf3entry Tff7b72-Tff7b72>
Tff7b72val Te6edf3emoji Tff7b72= Te6edf3entryTb4b4b4.Te6edf3key
Tff7b72val Te6edf3reactions Tff7b72= Te6edf3entryTb4b4b4.Te6edf3value
Tff7b72val Te6edf3localReaction Tff7b72= Te6edf3reactionsTb4b4b4.Te6edf3find Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3userTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3DataPacketTb4b4b4.Te6edf3ID_LOCAL Tff7b72|Tff7b72| Tffa657itTb4b4b4.Te6edf3userTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3myId Tb4b4b4}
Tff7b72val Te6edf3isSending Tff7b72=
Te6edf3localReactionTff7b72?.Te6edf3status Tff7b72=Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUED Tff7b72|Tff7b72| Te6edf3localReactionTff7b72?.Te6edf3status Tff7b72=Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3ENROUTE
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Tffd700$Te6edf3emojiTffd700${Te6edf3reactionsTb4b4b4.Te6edf3sizeTffd700}Ta5d6ff"Tb4b4b4,
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3clipTb4b4b4(Te6edf3CircleShapeTb4b4b4)
Tb4b4b4.Te6edf3backgroundTb4b4b4(Tff7b72if Tb4b4b4(Te6edf3selectedEmoji Tff7b72=Tff7b72= Te6edf3emojiTb4b4b4) Te6edf3ColorTb4b4b4.Te6edf3Gray Tff7b72else Te6edf3ColorTb4b4b4.Te6edf3TransparentTb4b4b4)
Tb4b4b4.Te6edf3thenTb4b4b4(Tff7b72if Tb4b4b4(Te6edf3isSendingTb4b4b4) Te6edf3ModifierTb4b4b4.Te6edf3graphicsLayerTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.5fTb4b4b4) Tff7b72else Te6edf3ModifierTb4b4b4)
Tb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)
Tb4b4b4.Te6edf3clickable Tb4b4b4{ Te6edf3selectedEmoji Tff7b72= Tff7b72if Tb4b4b4(Te6edf3selectedEmoji Tff7b72=Tff7b72= Te6edf3emojiTb4b4b4) Tff7b72null Tff7b72else Te6edf3emoji Tb4b4b4}Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3bodyMediumTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Te6edf3HorizontalDividerTb4b4b4(Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4)

Te6edf3LazyColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3verticalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4(Te6edf3filteredReactionsTb4b4b4) Tb4b4b4{ Te6edf3reaction Tff7b72-Tff7b72>
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3horizontal Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4,
Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3isLocal Tff7b72= Te6edf3reactionTb4b4b4.Te6edf3userTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3myId Tff7b72|Tff7b72| Te6edf3reactionTb4b4b4.Te6edf3userTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3DataPacketTb4b4b4.Te6edf3ID_LOCAL
Tff7b72val Te6edf3displayName Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isLocalTb4b4b4) Tb4b4b4{
Ta5d6ff"Tffd700${Te6edf3reactionTb4b4b4.Te6edf3userTb4b4b4.Te6edf3long_nameTffd700}Ta5d6ff (Tffd700${Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3youTb4b4b4)Tffd700}Ta5d6ff)Ta5d6ff"
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3reactionTb4b4b4.Te6edf3userTb4b4b4.Te6edf3long_name
Tb4b4b4}
Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Te6edf3displayNameTb4b4b4, Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3titleMediumTb4b4b4)
Te6edf3RowTb4b4b4(Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isLocalTb4b4b4) Tb4b4b4{
Te6edf3MessageStatusButtonTb4b4b4(
Te6edf3status Tff7b72= Te6edf3reactionTb4b4b4.Te6edf3statusTb4b4b4,
Te6edf3fromLocal Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3onStatusClick Tff7b72= Tb4b4b4{ Te6edf3showStatusDialog Tff7b72= Te6edf3reaction Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Te6edf3reactionTb4b4b4.Te6edf3emojiTb4b4b4, Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3titleLargeTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3RowTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3top Tff7b72= T79c0ff0.Te6edf3dpTb4b4b4, Te6edf3bottom Tff7b72= T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4,
Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3isLocalOrPreDbUpdateReaction Tff7b72= Tb4b4b4(Te6edf3reactionTb4b4b4.Te6edf3rssi Tff7b72=Tff7b72= T79c0ff0Tb4b4b4)
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isLocalOrPreDbUpdateReactionTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3reactionTb4b4b4.Te6edf3hopsAway Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3SnrTb4b4b4(Te6edf3reactionTb4b4b4.Te6edf3snrTb4b4b4)
Te6edf3RssiTb4b4b4(Te6edf3reactionTb4b4b4.Te6edf3rssiTb4b4b4)
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3RowTb4b4b4(
Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4,
Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(
Te6edf3imageVector Tff7b72= Te6edf3MeshtasticIconsTb4b4b4.Te6edf3HopCountTb4b4b4,
Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff1T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3tint Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceVariantTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.7fTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3reactionTb4b4b4.Te6edf3hopsAwayTb4b4b4.Te6edf3toStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelSmallTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4)
Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Te6edf3getShortDateTimeTb4b4b4(Te6edf3reactionTb4b4b4.Te6edf3timestampTb4b4b4)Tb4b4b4, Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelSmallTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.1s